// 'use strict';
//
// export default class extends think.controller.base {
//   /**
//    * some base method in here
//    */
//    async __before() {
//
//
//        if(this.http.controller === 'login' && this.http.action === 'dologin'){
//            return;
//        }
//        let myurl=this.http.module+"/"+this.http.controller+"/"+this.http.action;
//        //判断登录
//        let userinfo = await this.session('userinfo') || {};
//        if(think.isEmpty(userinfo)){
//            //return this.redirect("redirect");
//            //this.assign('userinfo',{});
//
//            if(this.isAjax()){
//              return this.fail('NOT_LOGIN');
//            }
//        }
//        this.userinfo = userinfo;
//        if(!this.isAjax()){
//          this.assign('userinfo',userinfo);
//        }
//        //判断登录
//
//        //判断权限
//
//        let uinfo=await this.session('userInfo');
//        if(uinfo){
//            let username=uinfo.name;
//            let userData=await this.model('user').where({name:username}).find();
//            let roleData=await this.model('manage_role').where({id:userData.role}).find();
//            let permissions=(roleData.permission).split(",");
//            console.log("roleData",roleData)
//            if(permissions.indexOf(myurl)<0){
//              if(this.http.method==='POST'){
//                  return this.fail("抱歉，您没有权限访问,请与系统管理员联系!");
//              }else{
//                  return this.display("error/nopermission");
//              }
//            }
//        }
//        //没有权限
//
//
//
//        //判断权限
//    }
// }


'use strict';
// +----------------------------------------------------------------------
// | CmPage [ 通用页面框架 ]
// +----------------------------------------------------------------------
// | Licensed under the Apache License, Version 2.0
// +----------------------------------------------------------------------
// | Author: defans <defans@sina.cn>
// +----------------------------------------------------------------------
/**
    用户及权限系统的controller模块，实现了对外的URL接口，包括PC端和移动端

 注意点 :
 1. base.js继承自 think.controller.base;
 2. 其他controller 继承自 base.js;
 3. 移动端APP的菜单是单独设置的，要单独配置各个角色和用户的权限；
 4. 移动端和PC端的版本是分开设置的;

    @module admin.controller
 */

/**
 * admin.controller的基类，用于admin模块下的其他controller类的继承，
 * 提供一些子类的公共方法
 * @class admin.controller.base
 */
export default class extends think.controller.base {
    /**
     本模块的所有action执行前的检查项
     @method  __before
     @return {promise} 当前用户未登录时，返回错误信息或者引导到登录页面
     */
  async __before(){
    //部分 action 下不检查
    let blankActions = ["login","dologin","logout"];
    //console.log(this.http.action);
    if(blankActions.indexOf(this.http.action) >=0){
        return;
    }
    //console.log(this.http.url);
    let userInfo = await this.session("userInfo");
    //判断 session 里的 userInfo
    if(think.isEmpty(userInfo)){
        //console.log("userinfo",userInfo)
        return this.redirect("/home/index/login");
    }
    let myurl=this.http.module+"/"+this.http.controller+"/"+this.http.action;
    let uinfo=await this.session('userInfo');
       if(uinfo){
           let username=uinfo.name;
           let userData=await this.model('user').where({name:username}).find();
           let roleData=await this.model('manage_role').where({id:userData.role}).find();
           let permissions=(roleData.permission).split(",");
           //console.log("roleData",roleData)
           if(permissions.indexOf(myurl)<0){
             if(this.http.method==='POST'){
                 return this.fail("抱歉，您没有权限访问,请与系统管理员联系!");
             }else{
                 return this.display("error/nopermission");
             }
           }
       }
  }
}
